home *** CD-ROM | disk | FTP | other *** search
/ Inside Mac Games Volume 1 / Inside Mac Games Volume 1.iso / Shareware / Arcade / RoboWar / Tournament VI / Samples / Krulockh Lord / Krulockh Lord
Encoding:
Text File  |  1993-05-05  |  19.4 KB  |  831 lines  |  [RobW/RWAR]

  1. #  Krulockh Lord
  2. #  By Eric L. Foley
  3. #  *** Tournament V Titan Class Champion ***
  4. #  (with a few updates)
  5.  
  6. #  Liberal commentary inserted by author
  7. #  to explain basic philosophies for newer
  8. #  RoboWarriors (or older ones), along with
  9. #  another of my stories to "explain" why the
  10. #  code's here at all . . .
  11.  
  12. { From the tales of the bards, Vol. VI . . .
  13.  
  14. Having defeated all comers in the Fifth
  15. Titan Tournament, the Krulockh Lord returned
  16. to the Lord of the Darkbringers with both the
  17. heads of his titanic enemies and the
  18. undisputed rulership of titanic battlefields.
  19. However, seeing what had happened in the
  20. wars with his mensch minions, the Dark Lord
  21. immediately decided that the technology in
  22. the Krulockh Lord (and thus, himself) was
  23. inadequate.  There now existed a robot which
  24. could actually lead his shots with fair
  25. reliability, sufficient to defeat most all
  26. mensch that opposed him.
  27.  
  28. However, a more immediate concern than
  29. incorporating Excelsior's aiming into his own
  30. designs was evident.  A band of Crusaders,
  31. seeing how the titanic Zuper Penquin had
  32. failed to defeat the Krulockh Lord, and how
  33. its weakness might be reversed, jury-rigged
  34. a force of defensive robots of their own, the
  35. Power Penquin.  Seeing that other resistance
  36. to the Archfiend might be stirred up, the
  37. Power Penquin was then sent to the Sixth
  38. Titanic Tournament, publishing its secrets.
  39. The Dark Lord, deciding that Shorshirsh could
  40. handle the situation himself, worried not.
  41. However, the vengeful and headstrong Krulockh
  42. Lord, angry that his courage in not competing
  43. with such a creature in such a forum might be
  44. in question, followed the Power Penquin to the
  45. tournament.  The Dark Lord was infuriated at 
  46. this development, for the Krulockh Lord had
  47. not this time received the mind blank spell
  48. ere he departed . . . }
  49.  
  50. #############################################
  51. #   as a result, the code:
  52. #############################################
  53.  
  54. x 150 > Init1 Init2 ifeg  
  55. { decide which wall is closer to get to fast}
  56.  
  57. {The init sequences are generally this guy's
  58. weakest point of the battle, but I generally
  59. don't use much code to do that; all I worry
  60. about is getting him to the wall . . . }
  61.  
  62. Init1:
  63.     Icon0
  64.     10 speedx' store
  65.     energy shield' store
  66.     90 aim' store
  67.     
  68. InitLoop1:
  69.     x 280 > ReadyUp ifg
  70.     Hunt call
  71.     InitLoop1 jump
  72.  
  73. ReadyUp:
  74.     0 shield' store
  75.     0 speedy' store
  76.     290 x - movex' store
  77.     y 150 > StartDown StartNorth ifeg
  78.  
  79. Init2:
  80.     Icon0
  81.     -10 speedx' store
  82.     energy shield' store
  83.     270 aim' store
  84.  
  85. InitLoop2:
  86.     x 20 < ReadyDown ifg
  87.     Hunt call
  88.     InitLoop2 jump
  89.  
  90. ReadyDown:
  91.     0 shield' store
  92.     0 speedx' store
  93.     10 x - movex' store
  94.     y 150 > StartSouth StartUp ifeg
  95.  
  96. Hunt:         # general search routine
  97.     range Spray if
  98.     aim 45 + aim' store
  99.     range Spray if
  100.     Collision Seek if
  101.     aim 90 - aim' store
  102.     range Spray if
  103.     aim 45 + aim' store
  104.     Collision Seek if
  105.     return
  106.  
  107. #  Universal routines
  108.  
  109. {This seek-and-destroy routine is the generic
  110. routine I use for all my collision checks.
  111. It's portable, it's simple (the arctan always
  112. starts the turret pointed straight ahead),
  113. and it's fairly effective.  It's aso general,
  114. so that you don't have to write sixteen
  115. different collision routines depending on
  116. which way you're going on which wall.}
  117.  
  118. Seek:
  119.     speedx speedy arctan aim' store
  120.     range Destroy if
  121.     45 aim + aim' store
  122.     range Destroy if
  123.     -90 aim + aim' store
  124.     range Destroy if
  125.     135 aim + aim' store
  126.     range Destroy if
  127.     180 aim + aim' store
  128.     range Destroy if
  129.     return
  130.  
  131. Destroy:
  132.     range 40 > Hold ifg
  133.     Icon2
  134.     12 hellbore' store
  135.     150 bullet' store
  136.     drop
  137.     return
  138.  
  139. {In almost all of my robots, I include this
  140. special "Hold" routine for whenever I want to
  141. get out of a conditional action.  A simple
  142. line such as:
  143.  
  144. (condition) Hold ifg
  145.  
  146. will do the trick, and it will return the
  147. PC to whatever section called the jump-from
  148. routine.  A simpler if statement can be used,
  149. but the Hold routine would need a drop to get
  150. rid of the return address, or it'll just
  151. go back and execute the rest of what you're
  152. trying to get *out* of.}
  153.  
  154. Hold:
  155.     return
  156.  
  157. { This is a generic spray utility.  This is
  158. a carry over from when the robot was
  159. originally designed for "mensch" opponents.
  160. Sprays are quite useless against any titan
  161. worth his salt, but the snarl in the program
  162. for the general-purpose shooting was tough
  163. enough to mull out and didn't spray often
  164. enough that I worried about it.  Besides,
  165. if the robot has lost track of its opponent,
  166. a hellbullet won't hit its enemy likely,
  167. anyhow.  It's still fairly effective against
  168. mensch (though I prefer the Jachyras' sprays
  169. for such). }
  170.  
  171. Spray:
  172.     sync
  173.     range 70 > Attack ifg
  174.     range dup 70 < and Nukem ifg
  175.     
  176. Spread:
  177.     energy 6 / p' store
  178.     p 8 < Hold ifg
  179.     p 2 * bullet' store
  180.     9 aim + aim' store
  181.     p bullet' store
  182.     aim 18 - aim' store
  183.     p bullet' store
  184.     aim 27 + aim' store
  185.     p bullet' store
  186.     aim 36 - aim' store 
  187.     p bullet' store
  188.     aim 18 + aim' store 
  189.     return
  190.  
  191. { Put stars on this next utility.  Basic long-
  192. distance attack.  The Krulockh Lord uses this
  193. to sort out its shots, and uses the deadly
  194. hellbullets which were an integral part of its
  195. victory in Tourney V.  With the program snarl,
  196. this guy kludges this up unnecessarily, but
  197. in subsequent versions one would call a
  198. routine not unlike this directly for maximum 
  199. effectiveness.  Note also that the Krulockh
  200. Lord will shoot its kill shot at a fairly long
  201. range, 70.  This will kill people at a longer
  202. distance but is a smidgeon less accurate than
  203. a closer number.  The Penquin series 
  204. uses a range of 50, Excelsior (Tourney V
  205. mensch champ) uses 41, and some of my other
  206. guys use 60.  However, the sync pause is
  207. mandatory for accurate shooting--a close-in
  208. robot that's moving at a right angle will not
  209. be hit by an instant kill shot, and the sync
  210. command delays the check to make sure the
  211. enemy stays in the line of fire well enough
  212. to shoot well.  Also, the Hold check here
  213. makes sure that the robot doesn't fire a
  214. useless shot that's too low of power. }
  215.  
  216. Attack:
  217.     sync
  218.     range dup 70 < and Nukem ifg
  219.     energy 30 < Hold ifg
  220.     12 hellbore' store    # knock down shields
  221.     energy bullet' store  # HURT him!!!
  222.     return 
  223.  
  224. Shoot:
  225.     energy bullet' store
  226.     return
  227.  
  228. {  Simple kill shot utility, with icon
  229. cosmetics for fun.  }
  230.  
  231. Nukem:
  232.     Icon2
  233.     12 hellbore' store
  234.     150 bullet' store
  235.     return
  236.  
  237. #  Movement into middle of screen
  238.  
  239. { These utilities cover the movement of the
  240. Krulockh Lord through the center of the
  241. screen.  If it sees an enemy along the walls
  242. in the course of its flight, it shoots at it
  243. and moves into the middle of the screen.  It
  244. then continues on wherever it hits the next
  245. wall into the corner it is now heading to. }
  246.  
  247. { This utility is the first one called }
  248.  
  249. WallShot:
  250.     speedx GoY GoX ife   # movement shift
  251.     range dup 70 < and Nukem if # close shot
  252.     Attack call  # if no close shot
  253.     speedx speedy arctan d' store
  254.         { d will save the direction for later}
  255.     Icon0
  256.     Transition call  {go to transition proc}
  257.  
  258. Determine:
  259.  
  260. { This utility figures out which way to go
  261. once it reaches its wall.  It then calls the
  262. right wall routine just as if it had come out
  263. of the corner. The shield is lowered for
  264. extra energy so the robot doesn't pause when
  265. it reaches the wall.  If you change the
  266. speeds at which the robot leaves the walls,
  267. you'll have to change these comparison
  268. numbers.  I found them out with a list of all
  269. possible diagonal speeds arctanned into a
  270. print statement for this guy during his
  271. development. }
  272.  
  273.     0 shield' store
  274.     d 119 = StartDown ifg
  275.     d 60 = StartNorth ifg
  276.     d 240 = StartSouth ifg
  277.     d 299 = StartUp ifg
  278.     d 150 = StartEast ifg
  279.     d 29 = StartRight ifg
  280.     d 209 = StartLeft ifg
  281.     d 330 = StartWest ifg
  282.     return
  283.  
  284. GoY:
  285.     0 shield' store
  286.     150 y - 30 / speedy' store
  287.     Cloak call
  288.     return
  289.  
  290. GoX:
  291.     0 shield' store
  292.     150 x - 30 / speedx' store
  293.     Cloak call
  294.     return
  295.  
  296. Transition:
  297.     Cloak call
  298.     45 aim' store
  299.     range Spray if
  300.     Collision Seek if
  301.     135 aim' store
  302.     range Spray if
  303.     d 1 > d 70 < and Check1 if
  304.     d 91 > d 179 < and Check2 if
  305.     Collision Seek if
  306.     d 181 > d 269 < and Check3 if
  307.     d 271 > d 359 < and Check4 if
  308.     225 aim' store
  309.     range Spray if
  310.     Collision Seek if
  311.     315 aim' store
  312.     range Spray if
  313.     Transition jump
  314.  
  315. { This next utility is another of my generic
  316. all-purpose sections.  I usually call it
  317. "Cloak," just for consistency, in my robots.
  318. This procedure is called throughout the
  319. titan's programming to keep the shield at the
  320. maximum level possible with existing energy
  321. reserves at all times, up to the stable 100
  322. point maximum.  Note that Cloak checks its 
  323. shield *plus* its energy for whether it's 
  324. less than 100.  If it's 100 or greater, it 
  325. has the energy in addition to its existing shields for the job.  Otherwise,
  326. it puts all possible energy into bolstering
  327. the shields, until eventually the build-up
  328. brings it slowly up to 100. }
  329.  
  330. Cloak:
  331.     energy shield + 100 < WimpOut if
  332.     100 shield' store
  333.     return
  334.  
  335. WimpOut:
  336.     drop
  337.     energy shield + shield' store
  338.     return
  339.  
  340. Check1:
  341.     y 25 < YLow ifg
  342.     x 275 > XHigh ifg
  343.     return
  344.  
  345. Check2:
  346.     x 275 > XHigh ifg
  347.     y 275 > YHigh ifg
  348.     return
  349.  
  350. Check3:
  351.     y 275 > YHigh ifg
  352.     x 25 < XLow ifg
  353.     return
  354.  
  355. Check4:
  356.     x 25 < XLow ifg
  357.     y 25 < YLow ifg
  358.     return
  359.  
  360. XLow:
  361.     0 speedx' store
  362.     10 x - movex' store
  363.     drop
  364.     Determine jump
  365.  
  366. XHigh:
  367.     0 speedx' store
  368.     290 x - movex' store
  369.     drop
  370.     Determine jump
  371.  
  372. YLow:
  373.     0 speedy' store
  374.     10 y - movey' store
  375.     drop
  376.     Determine jump
  377.  
  378. YHigh:
  379.     0 speedy' store
  380.     290 y - movey' store
  381.     drop
  382.     Determine jump
  383.  
  384.  
  385. #  Clockwise movement
  386.  
  387. { These are the perimeter handling routines.
  388. The Krulockh Lord lowers its shields to get
  389. all available energy out for escape.  This is
  390. a patch SINCE Tourney V; the one that won the
  391. tournament didn't tap its shields to get out
  392. of the corner, and as a result it often made a
  393. pause in escaping from an incoming shot.  This
  394. results in numerous shots hitting that might
  395. otherwise have been dodged.  The shields are
  396. only lowered until the wall routine calls
  397. Cloak again, a minimal time that I find quite
  398. tolerable, but such that the maximum shield
  399. level after the escape while still escaping
  400. as fast as possible is retained. }
  401.  
  402. { For those confused by two nearly identical
  403. sets of wall routines, the "Up-Down-Left-
  404. Right" set deals with clockwise movement,
  405. while "North-South-West-East" deals with
  406. counter-clockwise stuff.  It's a pain to keep
  407. track of, but you get used to it.  Besides,
  408. things like this are necessary if the robot
  409. is to reach its maximum potential. }
  410.  
  411. { The wall routines use a basic 0-4-45-90-135-
  412. 180 offset from straight ahead aim for a
  413. search pattern.  If an enemy is spotted at
  414. 0, 180 (on the wall) or 4 (just off the wall)
  415. the robot moves into the middle of the screen}
  416.  
  417. StartUp:
  418.     Icon0
  419.     0 shield' store  # tap into shields
  420.     0 speedx' store
  421.     -7 speedy' store  # get OUT of there!
  422.  
  423. MainUp:
  424.     Cloak call  # shields back up again
  425.     0 aim' store
  426.     range WallShot ifg
  427.     Collision Seek if
  428.     4 aim' store
  429.     range WallShot ifg
  430.     y 25 < NorthWest ifg
  431.     Collision Seek if
  432.     45 aim' store
  433.     range Spray if
  434.     Collision Seek if
  435.     y 25 < NorthWest ifg
  436.     135 aim' store
  437.     range Spray if
  438.     Collision Seek if
  439.     90 aim' store
  440.     range Spray if
  441.     y 25 < NorthWest ifg
  442.     Collision Seek if
  443.     180 aim' store
  444.     range WallShot ifg
  445.     y 25 < NorthWest ifg
  446.     Collision Seek if
  447.     MainUp jump
  448.  
  449. StartRight:
  450.     Icon0
  451.     0 shield' store
  452.     0 speedy' store
  453.     7 speedx' store
  454.  
  455. MainRight:
  456.     Cloak call
  457.     90 aim' store
  458.     range WallShot ifg
  459.     Collision Seek if
  460.     94 aim' store
  461.     range WallShot ifg
  462.     x 275 > NorthEast ifg
  463.     Collision Seek if
  464.     135 aim' store
  465.     range Spray if
  466.     Collision Seek if
  467.     x 275 > NorthEast ifg
  468.     225 aim' store
  469.     range Spray if
  470.     Collision Seek if
  471.     180 aim' store
  472.     range Spray if
  473.     x 275 > NorthEast ifg
  474.     Collision Seek if
  475.     270 aim' store
  476.     range WallShot ifg
  477.     x 275 > NorthEast ifg
  478.     Collision Seek if
  479.     MainRight jump
  480.  
  481. StartDown:
  482.     Icon0
  483.     0 shield' store
  484.     0 speedx' store
  485.     7 speedy' store
  486.  
  487. MainDown:
  488.     Cloak call
  489.     180 aim' store
  490.     range WallShot ifg
  491.     Collision Seek if
  492.     184 aim' store
  493.     range WallShot ifg
  494.     y 275 > SouthEast ifg
  495.     Collision Seek if
  496.     225 aim' store
  497.     range Spray if  
  498.     Collision Seek if
  499.     y 275 > SouthEast ifg
  500.     315 aim' store
  501.     range Spray if
  502.     Collision Seek if
  503.     270 aim' store
  504.     range Spray if
  505.     y 275 > SouthEast ifg
  506.     Collision Seek if
  507.     0 aim' store
  508.     range WallShot ifg
  509.     y 275 > SouthEast ifg
  510.     Collision Seek if
  511.     MainDown jump
  512.  
  513. StartLeft:
  514.     Icon0
  515.     0 shield' store
  516.     0 speedy' store
  517.     -7 speedx' store
  518.  
  519. MainLeft:
  520.     Cloak call
  521.     270 aim' store
  522.     range WallShot ifg
  523.     Collision Seek if
  524.     274 aim' store
  525.     range WallShot ifg
  526.     x 25 < SouthWest ifg
  527.     Collision Seek if
  528.     315 aim' store
  529.     range Spray if
  530.     Collision Seek if
  531.     x 25 < SouthWest ifg
  532.     45 aim' store
  533.     range Spray if
  534.     Collision Seek if
  535.     0 aim' store
  536.     range Spray if
  537.     x 25 < SouthWest ifg
  538.     Collision Seek if
  539.     90 aim' store
  540.     range WallShot ifg
  541.     x 25 < SouthWest ifg
  542.     Collision Seek if
  543.     MainLeft jump
  544.  
  545.  
  546. # Counter-clockwise movement
  547.  
  548. StartNorth:
  549.     Icon0
  550.     0 shield' store
  551.     0 speedx' store
  552.     -7 speedy' store
  553.  
  554. MainNorth:
  555.     Cloak call
  556.     0 aim' store
  557.     range WallShot ifg
  558.     Collision Seek if
  559.     356 aim' store
  560.     range WallShot ifg
  561.     y 25 < NorthEast ifg
  562.     Collision Seek if
  563.     270 aim' store
  564.     range Spray if
  565.     Collision Seek if
  566.     y 25 < NorthEast ifg
  567.     315 aim' store
  568.     range Spray if
  569.     Collision Seek if
  570.     225 aim' store
  571.     range Spray if
  572.     y 25 < NorthEast ifg
  573.     Collision Seek if
  574.     180 aim' store
  575.     range WallShot ifg
  576.     y 25 < NorthEast ifg
  577.     Collision Seek if
  578.     MainNorth jump
  579.  
  580. StartEast:
  581.     Icon0
  582.     0 shield' store
  583.     0 speedy' store
  584.     7 speedx' store
  585.  
  586. MainEast:
  587.     Cloak call
  588.     90 aim' store
  589.     range WallShot ifg
  590.     Collision Seek if
  591.     86 aim' store
  592.     range WallShot ifg
  593.     x 275 > SouthEast ifg
  594.     Collision Seek if
  595.     0 aim' store
  596.     range Spray if
  597.     Collision Seek if
  598.     x 275 > SouthEast ifg
  599.     45 aim' store
  600.     range Spray if
  601.     Collision Seek if
  602.     315 aim' store
  603.     range Spray if
  604.     x 275 > SouthEast ifg
  605.     Collision Seek if
  606.     270 aim' store
  607.     range WallShot ifg
  608.     x 275 > SouthEast ifg
  609.     Collision Seek if
  610.     MainEast jump
  611.  
  612. StartSouth:
  613.     Icon0
  614.     0 shield' store
  615.     0 speedx' store
  616.     7 speedy' store
  617.  
  618. MainSouth:
  619.     Cloak call
  620.     180 aim' store
  621.     range WallShot ifg
  622.     Collision Seek if
  623.     176 aim' store
  624.     range WallShot ifg
  625.     y 275 > SouthWest ifg
  626.     Collision Seek if
  627.     90 aim' store
  628.     range Spray if
  629.     Collision Seek if
  630.     y 275 > SouthWest ifg
  631.     135 aim' store
  632.     range Spray if
  633.     Collision Seek if
  634.     45 aim' store
  635.     range Spray if
  636.     y 275 > SouthWest ifg
  637.     Collision Seek if
  638.     0 aim' store
  639.     range WallShot ifg
  640.     y 275 > SouthWest ifg
  641.     Collision Seek if
  642.     MainSouth jump
  643.  
  644. StartWest:
  645.     Icon0
  646.     0 shield' store
  647.     0 speedy' store
  648.     -7 speedx' store
  649.  
  650. MainWest:
  651.     Cloak call
  652.     270 aim' store
  653.     range WallShot ifg
  654.     Collision Seek if
  655.     266 aim' store
  656.     range WallShot ifg
  657.     x 25 < NorthWest ifg
  658.     Collision Seek if
  659.     225 aim' store
  660.     range Spray if
  661.     x 25 < NorthWest ifg
  662.     Collision Seek if
  663.     135 aim' store
  664.     range Spray if
  665.     Collision Seek if
  666.     x 25 < NorthWest ifg
  667.     180 aim' store
  668.     range Spray if
  669.     Collision Seek if
  670.     90 aim' store
  671.     range WallShot ifg
  672.     x 25 < NorthWest ifg
  673.     Collision Seek if
  674.     MainWest jump
  675.  
  676.  
  677. #  Corner routines
  678.  
  679. { These routines handle the robot's actions
  680. in the corners of the screen.  These are
  681. actually among the simplest of the robot's
  682. tasks; the robot taps into its shields so that
  683. it doesn't stop a moment when it gets to the
  684. corner, the Cloaks up again as soon as it's
  685. set.  The defenses on the Krulockh Lord are
  686. a little bit faulty, in that shots coming
  687. from a straight-45 degree angle don't always
  688. get spotted, especially in the northern
  689. corners.  This is the result of the 0-25-65-
  690. 90 degree radar sweep.  For some reason, the
  691. 25-65 part overlaps at 45 on the bottom of
  692. the screen, but not at the top.  The Penquins
  693. (and the Dark Lord himself, who has evolved
  694. much since this guy was cloned off) use a
  695. 0-30-60-90 defense sweep.  This leaves out the
  696. hole in the radar.  The Krulockh's defenses
  697. leave the corners at a radar blip at a longer
  698. distance than the Penquins (100 vs. 80) , but
  699. he also moves out of the corners slower (7 vs.
  700. 9).  There has to be some trade-off between
  701. how timid the guy will be as far as incoming
  702. shots, with the speed at which he actually
  703. escapes.  Also, the Krulockh Lord also will
  704. run away from his own outgoing shots (except
  705. at 45 degrees at the top of the screen).  He
  706. also uses a purely offensive range scan with
  707. completely random selection of angles; thus,
  708. there are no real holes in his offensive
  709. searching, since anything within the arena
  710. can eventually be spotted if it doesn't spook
  711. him out of the corner. } 
  712.  
  713. NorthWest:
  714.     0 shield' store  # lower shields
  715.     0 speedx' store  # stops himself
  716.     0 speedy' store
  717.     10 x - movex' store  # sets himself in
  718.     10 y - movey' store
  719.     Icon0
  720.  
  721. NWLoop:
  722.     Cloak call      # shields go back up
  723.     90 aim' store
  724.     range Attack if
  725.     radar dup 100 < and StartSouth ifg
  726.     180 aim' store
  727.     range Attack if
  728.     radar dup 100 < and StartRight ifg
  729.     115 aim' store    
  730.     radar dup 100 < and StartSouth ifg
  731.     155 aim' store
  732.     radar dup 100 < and StartRight ifg
  733.     135 aim' store
  734.     range Spray if
  735.     random 4 / 90 + aim' store
  736.     range Spray if
  737.     random 4 / 90 + aim' store
  738.     range Spray if
  739.     random 4 / 90 + aim' store
  740.     range Spray if
  741.     NWLoop jump
  742.  
  743. NorthEast:
  744.     0 shield' store
  745.     0 speedx' store
  746.     0 speedy' store
  747.     290 x - movex' store
  748.     10 y - movey' store
  749.     Icon0
  750.  
  751. NELoop:
  752.     Cloak call
  753.     270 aim' store
  754.     range Attack if
  755.     radar dup 100 < and StartDown ifg
  756.     180 aim' store
  757.     range Attack if
  758.     radar dup 100 < and StartWest ifg
  759.     205 aim' store    
  760.     radar dup 100 < and StartWest ifg
  761.     245 aim' store
  762.     radar dup 100 < and StartDown ifg
  763.     225 aim' store
  764.     range Spray if
  765.     random 4 / 180 + aim' store
  766.     range Spray if
  767.     random 4 / 180 + aim' store
  768.     range Spray if
  769.     random 4 / 180 + aim' store
  770.     range Spray if
  771.     NELoop jump
  772.  
  773. SouthEast:
  774.     0 shield' store
  775.     0 speedx' store
  776.     0 speedy' store
  777.     290 x - movex' store
  778.     290 y - movey' store
  779.     Icon0
  780.  
  781. SELoop:
  782.     Cloak call
  783.     270 aim' store
  784.     range Attack if
  785.     radar dup 100 < and StartNorth ifg
  786.     360 aim' store
  787.     range Attack if
  788.     radar dup 100 < and StartLeft ifg
  789.     295 aim' store    
  790.     radar dup 100 < and StartNorth ifg
  791.     335 aim' store
  792.     radar dup 100 < and StartLeft ifg
  793.     315 aim' store
  794.     range Spray if
  795.     random 4 / 270 + aim' store
  796.     range Spray if
  797.     random 4 / 270 + aim' store
  798.     range Spray if
  799.     random 4 / 270 + aim' store
  800.     range Spray if
  801.     SELoop jump
  802.  
  803. SouthWest:
  804.     0 shield' store
  805.     0 speedx' store
  806.     0 speedy' store
  807.     10 x - movex' store
  808.     290 y - movey' store
  809.     Icon0
  810.  
  811. SWLoop:
  812.     Cloak call
  813.     90 aim' store
  814.     range Attack if
  815.     radar dup 100 < and StartUp ifg
  816.     360 aim' store
  817.     range Attack if
  818.     radar dup 100 < and StartEast ifg
  819.     25 aim' store    
  820.     radar dup 100 < and StartEast ifg
  821.     65 aim' store
  822.     radar dup 100 < and StartUp ifg
  823.     45 aim' store
  824.     range Spray if
  825.     random 4 / aim' store
  826.     range Spray if
  827.     random 4 / aim' store
  828.     range Spray if
  829.     random 4 / aim' store
  830.     range Spray if
  831.     SWLoop jump